fun main() {
    /*
     基本类
     class 类名 {
       var xx
       fun 方法名() {
       }
     }
     主构造函数
     显式
     class 类名 constructor(参数列表) {
        init {
        }
        fun 方法名() {
        }
     }
     隐式
     class 类名(参数列表) {}

     次构造函数 (无主构造函数)
     class 类名 {
       // 次构造函数
       constructor() {
       }
     }

     次构造函数 (有主构造函数)
     class 类名(age: Int) {
       var name: String = ''
       // 次构造
       constructor(name: String, age: Int): this(委托的参数 age) {
         this.name = name
       }
     }
      val p = leiming()
    */

    // val a = Animal(10, "leiming")
    // a.intro()
    val a = Worker("leiming", 10)
    a.intro()
}

// 次构造函数 (有主构造函数)
class Worker(var age: Int) {
    var name: String = ""

    // 通过this进行委托, 委托的参数是主构造函数的参数
    constructor(name: String, age: Int) : this(age) {
        this.name = name
    }

    fun intro() {
        println(" 姓名: $name, 年龄: $age")
    }
}


// 次构造函数 (无主构造函数)
class Animal1 {
    var age: Int = 0
    var name: String = ""

    // 次构造函数
    constructor(age: Int, name: String) {
        this.age = age
        this.name = name
    }

    fun intro() {
        println("name: $name, age: $age")
    }
}